#!/usr/bin/python3
# -*- coding:utf-8 -*-
# @Author    : jltxseo
# @File      : app.py
# @Time      : 18年3月19日 上午12:39
# @Software  : PyCharm
from flask import Flask
from config import config

from .database import db
from .extensions import bcrypt


def register_blueprints(app):
    """
    注册蓝图模块
    :param app:
    :return:
    """
    from .base import base_blueprint
    app.register_blueprint(base_blueprint)
    from .blog import blog_blueprint
    app.register_blueprint(blog_blueprint)


def register_extensions(app):
    """
    初始化
    :param app:
    :return:
    """
    db.init_app(app)
    with app.test_request_context():
        db.create_all()
    # Init the Flask-Bcrypt via app object
    bcrypt.init_app(app)


def create_app():
    # 这里要传自定义的static路径方便bootscrap可以找到资源文件
    app = Flask(__name__, static_folder='base/static')

    # Get the config from object of DecConfig
    # 使用 onfig.from_object() 而不使用 app.config['DEBUG'] 是因为这样可以加载 class DevConfig 的配置变量集合，而不需要一项一项的添加和修改。
    app.config.from_object(config.get('dev'))
    register_extensions(app)
    register_blueprints(app)
    return app
